package com.youlu.campus.entity.dto.sms;

import lombok.Builder;
import lombok.Data;

import java.util.concurrent.TimeUnit;

/**
 * @author : [dengbo]
 * @className : SmsBaseInfoDTO
 * @description : [描述说明该类的功能]
 * @createTime : [2022/5/11 12:21]
 */
@Data
@Builder
public class SmsBaseInfoDTO {
    /**
     * prefix 消息模块前缀，用于区分不同消息
     */
    private String prefix;
    /**
     * 手机号
     */
    private String phone;
    /**
     * 签名
     */
    private String signName;
    /**
     * 模版
     */
    private String templateId;
    /**
     * 消息参数，发送模版消息会用参数
     */
    private String[] templateParamSet;
    /**
     * 验证码，验证码校验会用到
     */
    private String code;
    /**
     * 语音播报次数，默认 2次，最多3次
     */
    private int voiceTime = 2;
    /**
     * 验证码有效时间
     */
    private int ttlTime = 5;
    /**
     * 验证码单位
     */
    private TimeUnit timeUnit = TimeUnit.MINUTES;
    /**
     * 消息类型
     */
    private SmsType smsType = SmsType.SMS;

    public enum SmsType {
        /**
         * 短信验证码
         */
        SMS(0),
        /**
         * 语音验证码
         */
        VOICE(1),
        /**
         * 短信模版消息
         */
        SMS_TEM(2),
        /**
         * 语音模版消息
         */
        VOICE_TEM(3),
        ;
        private final int type;

        SmsType(int type) {
            this.type = type;
        }

        public int getType() {
            return type;
        }


        public static SmsType getTypeByValue(Integer value) {
            if (value == null) {
                return SmsType.SMS;
            }
            for (SmsType type : SmsType.values()) {
                if (type.getType() == value) {
                    return type;
                }
            }
            return SmsType.SMS;
        }
    }

}
